<?php
/**
 * @ author fengdeqiao@163.com
 * Class MySQLLogic
 * @package Admin\Logic
 */


namespace Admin\Logic;


class MySQLLogic implements DbMysql
{
    public function connect()
    {
        // TODO: Implement connect() method.
        echo __METHOD__;
        dump(func_get_args());
        echo '<hr />';
    }

    public function disconnect()
    {
        // TODO: Implement disconnect() method.
        echo __METHOD__;
        dump(func_get_args());
        echo '<hr />';
    }

    public function free($result)
    {
        // TODO: Implement free() method.
        echo __METHOD__;
        dump(func_get_args());
        echo '<hr />';
    }

    public function query($sql, array $args = array())
    {
        // 获取所有参数
        $args = func_get_args();
        // 获取数组的第一个值
        $sql = array_shift($args);
        // 将字符串拆分成一个数组
        $params = preg_split('/\?[FTN]/', $sql);
        // 去除数组中的最后一个空字符串
        array_pop($params);
        // 清空
        $sql = '';
        // 循环参数组装成一个新的sql语句
        foreach ($params as $key => $param) {
            $sql .= $param . $args[$key];
        }
        return M()->execute($sql);
    }

    public function insert($sql, array $args = array())
    {
        /*echo __METHOD__;
        dump(func_get_args());
        echo '<hr />';*/
        // 获取所有参数
        $args = func_get_args();
        $sql = $args[0];
        $table = $args[1];
        $sql = str_replace('?T', $table, $sql);
        $params = $args[2];
        $tmp = [];
        foreach ($params as $key => $param) {
            $tmp[] = $key . '="' . $param . '"';
        }
        $sql = str_replace('?%', implode(',', $tmp), $sql);
        /*var_dump($sql);
        exit;*/
        if (M()->execute($sql)) {
            return M()->getLastInsID();
        } else {
            return false;
        };
    }

    public function update($sql, array $args = array())
    {
        // TODO: Implement update() method.
        echo __METHOD__;
        dump(func_get_args());
        echo '<hr />';
    }

    public function getAll($sql, array $args = array())
    {
        // TODO: Implement getAll() method.
        echo __METHOD__;
        dump(func_get_args());
        echo '<hr />';
    }

    public function getAssoc($sql, array $args = array())
    {
        // TODO: Implement getAssoc() method.
        echo __METHOD__;
        dump(func_get_args());
        echo '<hr />';
    }

    public function getRow($sql, array $args = array())
    {
        // 获取所有参数
        $args = func_get_args();
        // 获取数组的第一个值
        $sql = array_shift($args);
        // 将字符串拆分成一个数组
        $params = preg_split('/\?[FTN]/', $sql);
        // 去除数组中的最后一个空字符串
        array_pop($params);
        // 清空
        $sql = '';
        // 循环参数组装成一个新的sql语句
        foreach ($params as $key => $param) {
            $sql .= $param . $args[$key];
        }

        $result = M()->query($sql);
        return array_shift($result);
    }

    public function getCol($sql, array $args = array())
    {
        // TODO: Implement getCol() method.
        echo __METHOD__;
        dump(func_get_args());
        echo '<hr />';
    }

    public function getOne($sql, array $args = array())
    {
        // 获取所有参数
        $args = func_get_args();
        // 获取数组的第一个值
        $sql = array_shift($args);
        // 将字符串拆分成一个数组
        $params = preg_split('/\?[FTN]/', $sql);
        // 去除数组中的最后一个空字符串
        array_pop($params);
        // 清空
        $sql = '';
        // 循环参数组装成一个新的sql语句
        foreach ($params as $key => $param) {
            $sql .= $param . $args[$key];
        }

        $result = M()->query($sql);
        // 返回第一行记录
        $row = array_shift($result);
        // 返回第一行第一列
        return array_shift($row);
    }

}